# 作者： 李泉志
# 2025年01月12日11时20分秒
# 2947029073@qq.com

"""
03. 文件/目录的常用管理操作
    • 在终端/文件浏览器中可以执行常规的文件/目录管理操作，例如：
        – 创建、重命名、删除、改变路径、查看目录内容、……
    • 在 Python 中，如果希望通过程序实现上述功能，需要导入 os 模块
    文件操作：
        1) rename  重命名文件   os.rename(源文件名, 目标文件名)
        2) remove  删除文件,不能删除文件夹   os.remove(文件名)
    目录操作：
        1) mkdir  创建目录   os.mkdir(目录名)
        2) rmdir  删除空目录   os.rmdir(目录名)
        3) getcwd 获取当前工作目录   os.getcwd()
        4) chdir  改变当前工作目录   os.chdir(目录名)
        5) listdir 列出目录内容   os.listdir(目录名)
        6) path.isdir 判断是否为目录   os.path.isdir(路径名)
        提示：文件或者目录操作都支持相对路径和绝对路径


"""
import os


def use_rename():
    os.rename('file3', 'file4')  # 相对路径
    os.rename('D:\\school\\python_code\\d7\\class\\file3', 'D:\\school\\python_code\\d7\\class\\file4')  # 绝对路径


def use_dir_func():
    file_list = os.listdir('.')  # 列出当前目录内容
    print(file_list)
    os.rmdir('dir1')  # 删除空目录
    os.mkdir('dir1')  # 创建目录
    print(os.getcwd())  # 获取当前工作目录
    os.chdir('dir1')
    file = open('file1', 'w', encoding='utf-8')
    file.close()


def scan_dir(dir_path, width=0):
    file_list = os.listdir(dir_path)
    for file in file_list:
        print(' ' * width, file)
        new_path = dir_path + '/' + file  # 构造路径
        if os.path.isdir(new_path):
            scan_dir(new_path, width + 4)


def use_stat(file_path):
    file_info = os.stat(file_path)
    print('size{},uid{},mode{:x},mtime{}'.format(file_info.st_size, file_info.st_uid, \
                                                 file_info.st_mode, file_info.st_mtime))
    from time import strftime
    from time import gmtime
    gm_time = gmtime(file_info.st_mtime)
    # 把秒数转为字符串时间
    print(strftime("%Y-%m-%d20 %H:%M:%S", gm_time))

if __name__ == '__main__':
    # use_dir_func()
    # scan_dir('.')
    use_stat('dir1/file1')